mysql字符串拆分实现split功能 | 您所在的位置:网站首页 › sql 按逗号截取字符串 › mysql字符串拆分实现split功能 |
转自:https://blog.csdn.net/pjymyself/article/details/81668157有分隔符的字符串拆分 【0】需求 【0.1】需求描述数据库中 num字段值为:
实现的效果:需要将一行数据变成多行 【0.2】实现的SQL SELECT -- 因为表连接,所以有几个逗号就会出现几行相同的行,只是help_topic_id不一样;-- 当help_topic_id=0 时,获取第1个逗号左边的值;为1时获取第2个逗号与第1个逗号之间的值,为2时获取第3个逗号与第2个逗号之间的值,以此类推 SUBSTRING_INDEX(SUBSTRING_INDEX('7654,7698,7782,7788',',',help_topic_id+1),',',-1) AS num FROM mysql.help_topic WHERE help_topic_id 0就可以判断出;id列,是否在 ids列中出现过;做表连接的时候,也可以这样; 【5.2】instr
我们可以看出,instr是找出 参数2=》也就是上图中的 '123' 在参数1=》也就是上图中的 '321,123,555,12345' 中最开始出现的位置; 所以我们也只需要 where find_in_set(ids,id)>0 ,就可以判断出 id 在 ids中出现过;
但这有一个问题,如果逗号分隔开的字符串,包含我们查找的字符串,也会显示出来,这就不符合我们 根据分隔符 , 判断 查找字符串id 是否出现在 ids 中; 如下:
我们本来想查以逗号为分隔的完全匹配,但是12345包含了 123 所以查出来的结果也是>0的,这不对; 所以我们为了避免这种情况,可以加上分隔符;然后再用 字符串+分隔符作为 查找的字符串 来 匹配;
我们被查找的字符串 ids 中 再加上一个正常的 123, 再查看,如下图:确实是对的
转自:https://blog.csdn.net/pjymyself/article/details/81668157
|
CopyRight 2018-2019 实验室设备网 版权所有 |